package Package.FunctionalInterfaces.FunctionInterface;

import java.util.function.Function;

public class FunctionInterface {
    public static void FunctionInterface(){
//        Function接口
//Function<T,R>接口通常用于对参数进行处理，转换(处理逻辑由Lambda表达式实现)，然后返回一个新的值
//        常用方法
//        方法名 说明
//R apply(T t) 将此函数应用于给定的参数
//default Function andThen(Function after)返回一个组合函数，首先将该函数应用于输入，然后将after函数应用于结果
        convert("10086",s->{
            return Integer.parseInt(s);
        });
        convert(123456789,s->{
            return String.valueOf(s);
        });
        convert("123456",s->{
            return Integer.parseInt(s);
        },s->{
            return String.valueOf(s+1000);
        });
    }
    //定义一个方法，把一个字符串转换int类型，在控制台输出
    private static void convert(String s, Function<String,Integer> fun){
        int i=fun.apply(s);
        System.out.println(i);
    }
//    //定义一个方法，把一个int类型的数据加上一个整数之后，转为字符串在控制台输出
    private static void convert(int i, Function<Integer,String> fun){
        String s=fun.apply(i);
        System.out.println(s);
    }
//    //定义一个方法，把一个字符串转换int类型，把int类型的数据加上一个整数之后，转为字符串在控制台输出
private static void convert(String is, Function<String,Integer> fun,Function<Integer,String> fun1){
    String s= fun.andThen(fun1).apply(is);
    System.out.println(s);
}
}
